/**
 * 建造者模式
 * 目的： 需要组合输出一个全局对象
 * 应用场景： 当要创建单个、庞大的组合对象时
 * 精细化构建
 *
 */


/**
 * 建造者模式的基本结构
 * 把一个复杂的类各个部分，拆分成独立的类，
 * 然后再在最终类里组合到一块。final为最终给出去的类
 */
function Mode1() { }
function Mode2() { }

function Final() {
    this.mode1 = new Mode1()
    this.mode2 = new Mode2()
}

/**
 * 编辑器案例
 * 需求：有一个编辑器插件， 初始化的时候需要配置大量参数，而且内部功能很多
 */


function Editor() {
    this.init = new initHtml()
    this.fontControll = new fontControll()
    this.stateControll = new stateControll()
}
//初始化html
function initHtml() { }
//初始化编辑器样式
initHtml.prototype.initStyle = function () { }
//编辑器渲染
initHtml.prototype.randerDom = function () { }

//修改字体样式
function fontControll() { }
fontControll.prototype.changeColor = function () { }
fontControll.prototype.changeSize = function () { }
//编辑器前进后退键
function stateControll() {
    //存放状态缓存
    this.state = []
    //当前状态
    this.nowState = 0
}
stateControll.prototype.save = function () { }
//状态回滚
stateControll.prototype.stateBack = function () {
    var state = this.state[this.nowState - 1]
    this.fontControll.changeColor(state.color)
    this.fontControll.changeSize(state.size)
}



//vue 源码框架
function Vue() {
    if (!(this instanceof Vue)) {
        console.warn()
    }
    this._init(options)
}

initMixin(Vue)
stateMixin(Vue)